From fa214590662ae57ec0011e25ec0c6fafb65b165d Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 11 Aug 2009 15:41:23 +0200 Subject: [PATCH] Fix clearing of window background for some transparent notification icons This extends the usage of the native clear region call such that its called also for windows that have parent relative background all the way up to a native window. That way we get true background relative background clearing even to a foreign parent, which means that some transparent notification icons look right again. --- gdk/gdkwindow.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 2b773c2d85..0b8b84b2ec 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -4126,6 +4126,24 @@ gdk_window_clear (GdkWindow *window) width, height); } +static gboolean +clears_on_native (GdkWindowObject *private) +{ + GdkWindowObject *next; + + next = private; + do + { + private = next; + if (gdk_window_has_impl (private)) + return TRUE; + next = private->parent; + } + while (private->bg_pixmap == GDK_PARENT_RELATIVE_BG && + next && next->window_type != GDK_WINDOW_ROOT); + return FALSE; +} + static void gdk_window_clear_region_internal (GdkWindow *window, GdkRegion *region, @@ -4141,7 +4159,7 @@ gdk_window_clear_region_internal (GdkWindow *window, gdk_window_clear_backing_region_redirect (window, region); if (GDK_WINDOW_IMPL_GET_IFACE (private->impl)->clear_region && - gdk_window_has_impl (private)) + clears_on_native (private)) { GdkRegion *copy; copy = gdk_region_copy (region); -- 2.30.2